diff --git a/bt-wifi-firmware-util/NOTICE b/bt-wifi-firmware-util/NOTICE
deleted file mode 100644
index e5bdc11..0000000
--- a/bt-wifi-firmware-util/NOTICE
+++ /dev/null
@@ -1,72 +0,0 @@
-TEXAS INSTRUMENTS TEXT FILE LICENSE
-
-
-Copyright (c) 2008 - 2013 Texas Instruments Incorporated
-
-All rights reserved not granted herein.
-
-Limited License.
-
-If you download and use any version of this software from www.github.com, you
-acknowledge and agree that the terms and conditions of this license control and any
-previous licenses under which this software may have been provided on www.github.com
-are superseded and replaced by the terms and conditions of this license.
-
-Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
-license under copyrights and patents it now or hereafter owns or controls to make,
-have made, use, import, offer to sell and sell ("Utilize") this software subject
-to the terms herein.  With respect to the foregoing patent license, such license
-is granted solely to the extent that any such patent is necessary to Utilize the
-software alone.  The patent license shall not apply to any combinations which
-include this software, other than combinations with devices manufactured by or
-for TI ("TI Devices").  No hardware patent is licensed hereunder.
-
-Redistributions must preserve existing copyright notices and reproduce this license
-(including the above copyright notice and the disclaimer and (if applicable) source
-code license limitations below) in the documentation and/or other materials provided
-with the distribution
-
-Redistribution and use in binary form, without modification, are permitted provided
-that the following conditions are met:
-
-*   No reverse engineering, decompilation, or disassembly of this software is permitted
-    with respect to any software provided in binary form.
-
-*   any redistribution and use are licensed by TI for use only with TI Devices.
-
-*   Nothing shall obligate TI to provide you with source code for the software
-    licensed and provided to you in object code.
-
-If software source code is provided to you, modification and redistribution of the
-source code are permitted provided that the following conditions are met:
-
-*   any redistribution and use of the source code, including any resulting
-    derivative works, are licensed by TI for use only with TI Devices.
-
-*   any redistribution and use of any object code compiled from the source
-    code and any resulting derivative works, are licensed by TI for use only
-    with TI Devices.
-
-Neither the name of Texas Instruments Incorporated nor the names of its suppliers
-may be used to endorse or promote products derived from this software without specific
-prior written permission.
-
-DISCLAIMER.
-
-THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-BY UTILIZING THIS SOFTWARE TO ENABLE ANT CODE EMBEDDED ON TI DEVICES, YOU
-AGREE THAT NOTHING IN THIS LICENSE GIVES RISE TO ANY WARRANTY OR OTHER
-OBLIGATIONS BY TI OR ITS LICENSORS WITH RESPECT TO THE ANT CODE EMBEDDED
-ON TI DEVICES AND ENABLED BY THE SOFTWARE UNDER THIS LICENSE.  FURTHER, YOU
-AGREE THAT NOTHING IN THIS LICENSE GIVES RISE TO ANY RIGHT TO REVERSE ENGINEER,
-DECOMPILE OR DISASSEMBLE THE ANT CODE EMBEDDED ON THE TI DEVICES.
diff --git a/bt-wifi-firmware-util/TIInit_11.8.32-pcm-960.bts b/bt-wifi-firmware-util/TIInit_11.8.32-pcm-960.bts
deleted file mode 100644
index ff56d1c..0000000
--- a/bt-wifi-firmware-util/TIInit_11.8.32-pcm-960.bts
+++ /dev/null
Binary files differ
diff --git a/bt-wifi-firmware-util/TIInit_11.8.32.bts b/bt-wifi-firmware-util/TIInit_11.8.32.bts
deleted file mode 100755
index 824ca0f..0000000
--- a/bt-wifi-firmware-util/TIInit_11.8.32.bts
+++ /dev/null
Binary files differ
diff --git a/bt-wifi-firmware-util/wl18xx-conf-wl1837mod.bin b/bt-wifi-firmware-util/wl18xx-conf-wl1837mod.bin
deleted file mode 100644
index 5dd913c..0000000
--- a/bt-wifi-firmware-util/wl18xx-conf-wl1837mod.bin
+++ /dev/null
Binary files differ
diff --git a/bt-wifi-firmware-util/wl18xx-conf.bin b/bt-wifi-firmware-util/wl18xx-conf.bin
deleted file mode 100644
index 2bd0f4d..0000000
--- a/bt-wifi-firmware-util/wl18xx-conf.bin
+++ /dev/null
Binary files differ
diff --git a/bt-wifi-firmware-util/wl18xx-fw-4.bin b/bt-wifi-firmware-util/wl18xx-fw-4.bin
deleted file mode 100755
index 71c160a..0000000
--- a/bt-wifi-firmware-util/wl18xx-fw-4.bin
+++ /dev/null
Binary files differ
diff --git a/build/tasks/dtimage.mk b/build/tasks/dtimage.mk
index 4d6a74d..e125d17 100644
--- a/build/tasks/dtimage.mk
+++ b/build/tasks/dtimage.mk
@@ -1,7 +1,7 @@
 ifneq ($(filter hikey%, $(TARGET_DEVICE)),)
 ifneq ($(TARGET_NO_DTIMAGE), true)
 
-MKDTIMG := device/linaro/hikey/installer/hikey960/mkdtimg
+MKDTIMG := $(LINARO_VENDOR_PATH)/hikey960/$(EXPECTED_LINARO_VENDOR_VERSION)/bootloader/mkdtimg
 DTB := $(PRODUCT_OUT)/hi3660-hikey960.dtb
 
 $(PRODUCT_OUT)/dt.img: $(DTB)
diff --git a/device-common.mk b/device-common.mk
index 6d04752..9069595 100644
--- a/device-common.mk
+++ b/device-common.mk
@@ -17,6 +17,31 @@
 # Enable updating of APEXes
 $(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
 
+# Check vendor package version
+# If you need to make changes to the vendor partition,
+# please modify the source git project here:
+#   https://staging-git.codelinaro.org/linaro/linaro-aosp/aosp-linaro-vendor-package
+include $(LOCAL_PATH)/vendor-package-ver.mk
+ifneq (,$(wildcard $(LINARO_VENDOR_PATH)/hikey960/$(EXPECTED_LINARO_VENDOR_VERSION)/version.mk))
+  # Unfortunately inherit-product doesn't export build variables from the
+  # called make file to the caller, so we have to include it directly here.
+  include $(LINARO_VENDOR_PATH)/hikey960/$(EXPECTED_LINARO_VENDOR_VERSION)/version.mk
+  ifneq ($(TARGET_LINARO_VENDOR_VERSION), $(EXPECTED_LINARO_VENDOR_VERSION))
+    $(warning TARGET_LINARO_VENDOR_VERSION ($(TARGET_LINARO_VENDOR_VERSION)) does not match exiting the build ($(EXPECTED_LINARO_VENDOR_VERSION)).)
+    $(warning Please download new binaries here:)
+    $(warning    $(VND_PKG_URL) )
+    $(warning And extract in the ANDROID_TOP_DIR)
+    # Would be good to error out here, but that causes other issues
+  endif
+else
+  $(warning Missing Linaro Vendor Package!)
+  $(warning Please download new binaries here:)
+  $(warning    $(VND_PKG_URL) )
+  $(warning And extract in the ANDROID_TOP_DIR)
+  # Would be good to error out here, but that causes other issues
+endif
+
+$(warning, EXPECTED_LINARO_VENDOR_VERSION=$(EXPECTED_LINARO_VENDOR_VERSION))
 
 ifneq (,$(filter $(TARGET_PRODUCT),hikey960_tv hikey_tv))
 # Setup TV Build
diff --git a/fetch-vendor-package.sh b/fetch-vendor-package.sh
new file mode 100755
index 0000000..cbadbde
--- /dev/null
+++ b/fetch-vendor-package.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+# fetch, check & extract the current vendor package
+set -e
+
+DIR_PARENT=$(cd $(dirname $0); pwd)
+if [ -z "${ANDROID_BUILD_TOP}" ]; then
+    ANDROID_BUILD_TOP=$(cd ${DIR_PARENT}/../../../; pwd)
+fi
+
+. "${ANDROID_BUILD_TOP}/device/linaro/hikey/vendor-package-ver.sh"
+
+PKG_FILE=extract-linaro_devices-${EXPECTED_LINARO_VENDOR_VERSION}
+
+pushd ${ANDROID_BUILD_TOP}
+
+if [ ! -e "${PKG_FILE}.tgz"  ]; then
+    curl -L ${VND_PKG_URL} -o  ${PKG_FILE}.tgz
+fi
+
+# generate expected sha512sum, check & cleanup
+echo "${EXPECTED_LINARO_VENDOR_SHA}  ${PKG_FILE}.tgz" > ${PKG_FILE}.tgz.sha
+sha512sum -c ${PKG_FILE}.tgz.sha
+rm ${PKG_FILE}.tgz.sha
+
+tar -xf ${PKG_FILE}.tgz
+./${PKG_FILE}.sh
+popd
diff --git a/hikey.mk b/hikey.mk
index 7471955..c643f87 100644
--- a/hikey.mk
+++ b/hikey.mk
@@ -1,5 +1,7 @@
+include $(LOCAL_PATH)/vendor-package-ver.mk
 $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
 $(call inherit-product, device/linaro/hikey/hikey-common.mk)
+$(call inherit-product, vendor/linaro/hikey960/$(EXPECTED_LINARO_VENDOR_VERSION)/hikey.mk)
 
 #setup dm-verity configs
 PRODUCT_SYSTEM_VERITY_PARTITION := /dev/block/platform/soc/f723d000.dwmmc0/by-name/system
@@ -54,3 +56,7 @@
 
 endif
 endif
+
+PRODUCT_SOONG_NAMESPACES += \
+  vendor/linaro/hikey960/$(EXPECTED_LINARO_VENDOR_VERSION)/mali/utgard
+
diff --git a/hikey/device-hikey.mk b/hikey/device-hikey.mk
index aa202b3..cc94c40 100644
--- a/hikey/device-hikey.mk
+++ b/hikey/device-hikey.mk
@@ -24,15 +24,6 @@
 			device/linaro/hikey/ueventd.common.rc:$(TARGET_COPY_OUT_VENDOR)/ueventd.rc \
 			device/linaro/hikey/common.kl:$(TARGET_COPY_OUT_VENDOR)/usr/keylayout/hikey.kl
 
-# Copy BT firmware
-PRODUCT_COPY_FILES += \
-	device/linaro/hikey/bt-wifi-firmware-util/TIInit_11.8.32.bts:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/TIInit_11.8.32.bts
-
-# Copy wlan firmware
-PRODUCT_COPY_FILES += \
-	device/linaro/hikey/bt-wifi-firmware-util/wl18xx-fw-4.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/wl18xx-fw-4.bin \
-	device/linaro/hikey/bt-wifi-firmware-util/wl18xx-conf.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/wl18xx-conf.bin
-
 # Build HiKey HDMI audio HAL
 PRODUCT_PACKAGES += audio.primary.hikey
 
@@ -54,7 +45,7 @@
 PRODUCT_PACKAGES += hwcomposer.drm_hikey
 
 # Include mali blobs from ARM
-PRODUCT_PACKAGES += libGLES_mali.so END_USER_LICENCE_AGREEMENT.txt
+PRODUCT_PACKAGES += libGLES_mali
 
 ifneq ($(TARGET_NO_RECOVERY),true)
 PRODUCT_COPY_FILES += \
diff --git a/hikey960.mk b/hikey960.mk
index b300bfa..06ac84b 100644
--- a/hikey960.mk
+++ b/hikey960.mk
@@ -11,11 +11,14 @@
   endif
 endif
 
-#
+
+include $(LOCAL_PATH)/vendor-package-ver.mk
+
 # Inherit the common device configuration
 $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
 $(call inherit-product, device/linaro/hikey/hikey960/device-hikey960.mk)
 $(call inherit-product, device/linaro/hikey/device-common.mk)
+$(call inherit-product, vendor/linaro/hikey960/$(EXPECTED_LINARO_VENDOR_VERSION)/hikey960.mk)
 
 PRODUCT_PROPERTY_OVERRIDES += ro.opengles.version=196608
 
@@ -46,3 +49,6 @@
         $(SDCARDFS_KO)
   endif
 endif
+
+PRODUCT_SOONG_NAMESPACES += \
+  vendor/linaro/hikey960/$(EXPECTED_LINARO_VENDOR_VERSION)/mali/bifrost
diff --git a/hikey960/device-hikey960.mk b/hikey960/device-hikey960.mk
index d34dc31..dc1c52a 100644
--- a/hikey960/device-hikey960.mk
+++ b/hikey960/device-hikey960.mk
@@ -42,15 +42,6 @@
 PRODUCT_USE_DYNAMIC_PARTITIONS := true
 PRODUCT_USE_DYNAMIC_PARTITION_SIZE :=true
 
-# Copy BT firmware
-PRODUCT_COPY_FILES += \
-	device/linaro/hikey/bt-wifi-firmware-util/TIInit_11.8.32-pcm-960.bts:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/TIInit_11.8.32.bts
-
-# Copy wlan firmware
-PRODUCT_COPY_FILES += \
-	device/linaro/hikey/bt-wifi-firmware-util/wl18xx-fw-4.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/wl18xx-fw-4.bin \
-	device/linaro/hikey/bt-wifi-firmware-util/wl18xx-conf-wl1837mod.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/wl18xx-conf.bin
-
 # Copy hifi firmware
 PRODUCT_COPY_FILES += \
 	device/linaro/hikey/hifi/firmware/hifi-hikey960.img:$(TARGET_COPY_OUT_VENDOR)/firmware/hifi/hifi.img
@@ -65,12 +56,11 @@
 PRODUCT_PACKAGES += gralloc.hikey960
 
 #binary blobs from ARM
-PRODUCT_PACKAGES +=	libGLES_mali.so \
-			vulkan.hikey960.so \
-			libbccArm.so \
-			libRSDriverArm.so \
-			libmalicore.bc \
-			END_USER_LICENCE_AGREEMENT.txt
+PRODUCT_PACKAGES +=	libGLES_mali \
+			vulkan.hikey960 \
+			libbccArm \
+			libRSDriverArm \
+			libmalicore.bc
 
 ifdef MALI_RS_DRIVER_AVAILABLE
 PRODUCT_COPY_FILES += \
diff --git a/installer/hikey960/fip.bin b/installer/hikey960/fip.bin
deleted file mode 100644
index dcf61e2..0000000
--- a/installer/hikey960/fip.bin
+++ /dev/null
Binary files differ
diff --git a/installer/hikey960/flash-all.sh b/installer/hikey960/flash-all.sh
index 70bb432..c894558 100755
--- a/installer/hikey960/flash-all.sh
+++ b/installer/hikey960/flash-all.sh
@@ -5,7 +5,7 @@
 
 # for cases that don't run "lunch hikey960-userdebug"
 if [ -z "${ANDROID_BUILD_TOP}" ]; then
-    ANDROID_BUILD_TOP=${INSTALLER_DIR}/../../../../../
+    ANDROID_BUILD_TOP=$(cd ${INSTALLER_DIR}/../../../../../; pwd)
     ANDROID_PRODUCT_OUT="${ANDROID_BUILD_TOP}/out/target/product/hikey960"
 fi
 
@@ -16,6 +16,22 @@
 
 echo ${ECHO_PREFIX}"android out dir:${ANDROID_PRODUCT_OUT}"
 
+. "${ANDROID_BUILD_TOP}/device/linaro/hikey/vendor-package-ver.sh"
+
+VENDOR_DIR=$ANDROID_BUILD_TOP/vendor/linaro/hikey960/${EXPECTED_LINARO_VENDOR_VERSION}/
+
+# TODO: Pull one-time recovery/qdl path out of standard install
+# Flash bootloader firmware files
+if [ ! -d "${VENDOR_DIR}/" ]; then
+    echo "FLASH-ALL-AOSP: Missing vendor firmware package?"
+    echo "                Make sure the vendor binaries have been downloaded from"
+    echo "                ${VND_PKG_URL}"
+    echo "                and extracted to $ANDROID_BUILD_TOP."
+    exit
+fi
+
+pushd $VENDOR_DIR/bootloader/
+
 function check_partition_table_version () {
 	fastboot erase reserved
 	if [ $? -eq 0 ]
@@ -27,21 +43,21 @@
 }
 
 function flashing_atf_uefi () {
-	fastboot flash ptable "${INSTALLER_DIR}"/prm_ptable.img
-	fastboot flash xloader "${INSTALLER_DIR}"/hisi-sec_xloader.img
+	fastboot flash ptable prm_ptable.img
+	fastboot flash xloader hisi-sec_xloader.img
 	fastboot reboot-bootloader
 
-	fastboot flash fastboot "${INSTALLER_DIR}"/l-loader.bin
-	fastboot flash fip "${INSTALLER_DIR}"/fip.bin
-	fastboot flash nvme "${INSTALLER_DIR}"/hisi-nvme.img
-	fastboot flash fw_lpm3   "${INSTALLER_DIR}"/hisi-lpm3.img
-	fastboot flash trustfirmware   "${INSTALLER_DIR}"/hisi-bl31.bin
+	fastboot flash fastboot l-loader.bin
+	fastboot flash fip fip.bin
+	fastboot flash nvme hisi-nvme.img
+	fastboot flash fw_lpm3 hisi-lpm3.img
+	fastboot flash trustfirmware hisi-bl31.bin
 	fastboot reboot-bootloader
 
-	fastboot flash ptable "${INSTALLER_DIR}"/prm_ptable.img
-	fastboot flash xloader "${INSTALLER_DIR}"/hisi-sec_xloader.img
-	fastboot flash fastboot "${INSTALLER_DIR}"/l-loader.bin
-	fastboot flash fip "${INSTALLER_DIR}"/fip.bin
+	fastboot flash ptable prm_ptable.img
+	fastboot flash xloader hisi-sec_xloader.img
+	fastboot flash fastboot l-loader.bin
+	fastboot flash fip fip.bin
 
 	fastboot flash boot "${ANDROID_PRODUCT_OUT}"/boot.img
 	fastboot flash super "${ANDROID_PRODUCT_OUT}"/super.img
@@ -50,9 +66,9 @@
 }
 
 function upgrading_ptable_1mb_aligned () {
-	fastboot flash xloader "${INSTALLER_DIR}"/hisi-sec_xloader.img
-	fastboot flash ptable "${INSTALLER_DIR}"/hisi-ptable.img
-	fastboot flash fastboot "${INSTALLER_DIR}"/hisi-fastboot.img
+	fastboot flash xloader hisi-sec_xloader.img
+	fastboot flash ptable hisi-ptable.img
+	fastboot flash fastboot hisi-fastboot.img
 	fastboot reboot-bootloader
 }
 
@@ -73,3 +89,4 @@
 fi
 
 fastboot reboot
+popd
diff --git a/installer/hikey960/hisi-bl31.bin b/installer/hikey960/hisi-bl31.bin
deleted file mode 100644
index abebea6..0000000
--- a/installer/hikey960/hisi-bl31.bin
+++ /dev/null
Binary files differ
diff --git a/installer/hikey960/hisi-fastboot.img b/installer/hikey960/hisi-fastboot.img
deleted file mode 100644
index 72cbf90..0000000
--- a/installer/hikey960/hisi-fastboot.img
+++ /dev/null
Binary files differ
diff --git a/installer/hikey960/hisi-lpm3.img b/installer/hikey960/hisi-lpm3.img
deleted file mode 100644
index bd0243b..0000000
--- a/installer/hikey960/hisi-lpm3.img
+++ /dev/null
Binary files differ
diff --git a/installer/hikey960/hisi-nvme.img b/installer/hikey960/hisi-nvme.img
deleted file mode 100644
index ca5bc7c..0000000
--- a/installer/hikey960/hisi-nvme.img
+++ /dev/null
Binary files differ
diff --git a/installer/hikey960/hisi-ptable.img b/installer/hikey960/hisi-ptable.img
deleted file mode 100644
index 269aa63..0000000
--- a/installer/hikey960/hisi-ptable.img
+++ /dev/null
Binary files differ
diff --git a/installer/hikey960/hisi-sec_xloader.img b/installer/hikey960/hisi-sec_xloader.img
deleted file mode 100644
index 47c353b..0000000
--- a/installer/hikey960/hisi-sec_xloader.img
+++ /dev/null
Binary files differ
diff --git a/installer/hikey960/l-loader.bin b/installer/hikey960/l-loader.bin
deleted file mode 100644
index e0c3726..0000000
--- a/installer/hikey960/l-loader.bin
+++ /dev/null
Binary files differ
diff --git a/installer/hikey960/legacy-flash-all.sh b/installer/hikey960/legacy-flash-all.sh
deleted file mode 100755
index 3f8bf9b..0000000
--- a/installer/hikey960/legacy-flash-all.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-
-INSTALLER_DIR="`dirname ${0}`"
-
-# for cases that don't run "lunch hikey960-userdebug"
-if [ -z "${ANDROID_BUILD_TOP}" ]; then
-    ANDROID_BUILD_TOP=${INSTALLER_DIR}/../../../../../
-    ANDROID_PRODUCT_OUT="${ANDROID_BUILD_TOP}/out/target/product/hikey960"
-fi
-
-if [ ! -d "${ANDROID_PRODUCT_OUT}" ]; then
-    echo "error in locating out directory, check if it exist"
-    exit
-fi
-
-echo "android out dir:${ANDROID_PRODUCT_OUT}"
-
-fastboot flash xloader "${INSTALLER_DIR}"/hisi-sec_xloader.img
-fastboot flash ptable "${INSTALLER_DIR}"/hisi-ptable.img
-fastboot flash fastboot "${INSTALLER_DIR}"/hisi-fastboot.img
-fastboot reboot-bootloader
-fastboot flash nvme "${INSTALLER_DIR}"/hisi-nvme.img
-fastboot flash fw_lpm3   "${INSTALLER_DIR}"/hisi-lpm3.img
-fastboot flash trustfirmware   "${INSTALLER_DIR}"/hisi-bl31.bin
-fastboot flash boot "${ANDROID_PRODUCT_OUT}"/boot.img
-fastboot flash dts "${ANDROID_PRODUCT_OUT}"/dt.img
-fastboot flash super "${ANDROID_PRODUCT_OUT}"/super.img
-fastboot flash userdata "${ANDROID_PRODUCT_OUT}"/userdata.img
-fastboot format:ext4:10000000 cache
-fastboot reboot
diff --git a/installer/hikey960/mkdtimg b/installer/hikey960/mkdtimg
deleted file mode 100755
index 6572204..0000000
--- a/installer/hikey960/mkdtimg
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017, The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-from __future__ import print_function
-try:
-	from os import fstat, stat, remove
-	from sys import exit
-	from argparse import ArgumentParser, FileType
-	from ctypes import sizeof, Structure, c_char, c_int
-	from struct import pack, calcsize
-	import zlib
-except Exception as e:
-	print("some module is needed:" + str(e))
-	exit(-1)
-
-dt_head_info_fmt = '4sII'
-dt_entry_fmt = 'Q4I2Q'
-dtimg_version = 1
-dtb_count = 1
-
-def write32(output, value):
-	output.write(chr(value & 255)) ; value=value // 256
-	output.write(chr(value & 255)) ; value=value // 256
-	output.write(chr(value & 255)) ; value=value // 256
-	output.write(chr(value & 255))
-
-def compress(filename, input, output):
-	output.write('\037\213\010')
-	output.write(chr(0))
-
-	statval = stat(filename)
-	write32(output, 0)
-	output.write('\002')
-	output.write('\003')
-
-	crcval = zlib.crc32("")
-	compobj = zlib.compressobj(9, zlib.DEFLATED, -zlib.MAX_WBITS,
-		zlib.DEF_MEM_LEVEL, 0)
-	while True:
-		data = input.read(1024)
-		if data == "":
-			break
-		crcval = zlib.crc32(data, crcval)
-		output.write(compobj.compress(data))
-	output.write(compobj.flush())
-	write32(output, crcval)
-	write32(output, statval.st_size)
-
-def dtb_compress(dtb_file):
-	try:
-		outputname = dtb_file + '.gz'
-		input = open(dtb_file, 'rb')
-		output = open(outputname, 'wb')
-		compress(dtb_file, input, output)
-		input.close()
-		output.close()
-	except Exception as e:
-		print('dtb_compress error:' + str(e))
-		exit(-1)
-	return outputname
-
-class dt_head_info(Structure):
-	_fields_ = [('magic', c_char * 4),
-		    ('version', c_int),
-		    ('dt_count', c_int)]
-
-class dt_entry_t(Structure):
-	_fields_ = [('dtb_size', c_int),
-		    ('dtb_offset', c_int)]
-
-def align_page_size(offset, pagesize):
-	return (pagesize - (offset % pagesize))
-
-def write_head_info(head_info, args):
-	args.output.write(pack(dt_head_info_fmt,
-			       head_info.magic,
-			       head_info.version,
-			       head_info.dt_count))
-
-def write_dtb_entry_t(dt_entry, args):
-	args.output.write(pack(dt_entry_fmt,
-			       0,  # reserved
-			       dt_entry.dtb_size,
-			       0,  # reserved
-			       dt_entry.dtb_offset,
-			       0,  # reserved
-			       0,  # reserved
-			       0)) # reserved
-
-def write_padding(args, padding):
-	for i in range(0, padding):
-		args.output.write('\x00')
-
-def write_dtb(args):
-	dtb_file = args.dtb
-	out_dtb = dtb_file
-	if args.compress == True:
-		out_dtb = dtb_compress(dtb_file)
-	try:
-		dtb_offset = calcsize(dt_head_info_fmt) + \
-				      calcsize(dt_entry_fmt) + \
-				      4
-		padding = align_page_size(dtb_offset, args.pagesize)
-		dtb_size = stat(out_dtb).st_size
-		dtb_size_padding = align_page_size(dtb_size, args.pagesize)
-		dt_entry = dt_entry_t(dtb_size + dtb_size_padding,
-				      dtb_offset + padding)
-		write_dtb_entry_t(dt_entry, args)
-		args.output.write(pack('I', 0)) # SUCCESS code number
-		write_padding(args, padding)
-		with open(out_dtb, 'rb') as dtb_fd:
-			args.output.write(dtb_fd.read(dtb_size))
-			write_padding(args, dtb_size_padding)
-	except Exception as e:
-		print('write dtb error:' + str(e))
-		exit(-1)
-
-def clean_gz_file(args):
-	try:
-		if args.compress != True:
-			return
-		remove(args.dtb + '.gz')
-	except Exception as e:
-		print('clean gz file error:' + str(e))
-		exit(-1)
-
-def parse_cmdline():
-	parser = ArgumentParser()
-	parser.add_argument('-c', '--compress', help='compress dtb or not',
-			    action='store_true')
-	parser.add_argument('-d', '--dtb', help='path to the dtb', type=str,
-			    required=True)
-	parser.add_argument('-s', '--pagesize', help='align page size',
-			    type=int, choices=[2**i for i in range(11,15)],
-			    default=2048)
-	parser.add_argument('-o', '--output', help='output file name',
-			    type=FileType('wb'), required=True)
-	return parser.parse_args()
-
-def main():
-	args = parse_cmdline()
-	dtimg_head_info = dt_head_info('HSDT', dtimg_version, dtb_count)
-	write_head_info(dtimg_head_info, args)
-	write_dtb(args)
-	clean_gz_file(args)
-
-if __name__ == '__main__':
-	main()
diff --git a/installer/hikey960/prm_ptable.img b/installer/hikey960/prm_ptable.img
deleted file mode 100644
index e7b9b03..0000000
--- a/installer/hikey960/prm_ptable.img
+++ /dev/null
Binary files differ
diff --git a/installer/hikey960/uefi-flash-all.sh b/installer/hikey960/uefi-flash-all.sh
deleted file mode 100755
index 347b5b2..0000000
--- a/installer/hikey960/uefi-flash-all.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-INSTALLER_DIR="`dirname ${0}`"
-${INSTALLER_DIR}/flash-all.sh
diff --git a/mali/Android.mk b/mali/Android.mk
deleted file mode 100644
index 4060483..0000000
--- a/mali/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (C) 2015 The Android Open-Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# WARNING: Everything listed here will be built on ALL platforms,
-# including x86, the emulator, and the SDK.  Modules must be uniquely
-# named (liblights.panda), and must build everywhere, or limit themselves
-# to only building on ARM if they include assembly. Individual makefiles
-# are responsible for having their own logic, for fine-grained control.
-
-ifneq ($(filter hikey%, $(TARGET_DEVICE)),)
-
-LOCAL_PATH := $(call my-dir)
-
-# if some modules are built directly from this directory (not subdirectories),
-# their rules should be written here.
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
-endif
diff --git a/mali/bifrost/APACHE_LICENSE.txt b/mali/bifrost/APACHE_LICENSE.txt
deleted file mode 100644
index d645695..0000000
--- a/mali/bifrost/APACHE_LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/mali/bifrost/Android.mk b/mali/bifrost/Android.mk
deleted file mode 100644
index 0df1f5f..0000000
--- a/mali/bifrost/Android.mk
+++ /dev/null
@@ -1,87 +0,0 @@
-ifneq ($(filter hikey960, $(TARGET_DEVICE)),)
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := END_USER_LICENCE_AGREEMENT.txt
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_STRIP_MODULE := false
-LOCAL_SRC_FILES_arm := $(LOCAL_MODULE)
-LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)
-LOCAL_MULTILIB := 32
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libGLES_mali.so
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_STRIP_MODULE := false
-LOCAL_SRC_FILES_arm := lib/egl/$(LOCAL_MODULE)
-LOCAL_SRC_FILES_arm64 := lib64/egl/$(LOCAL_MODULE)
-LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)/lib/egl/
-LOCAL_MODULE_PATH_64 := $(TARGET_OUT_VENDOR)/lib64/egl/
-LOCAL_MULTILIB := both
-LOCAL_SHARED_LIBRARIES := android.hardware.graphics.common@1.0 libz libnativewindow libc++ liblog libm libc libdl
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libbccArm.so
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_STRIP_MODULE := false
-LOCAL_SRC_FILES_arm64 := lib64/$(LOCAL_MODULE)
-LOCAL_MODULE_PATH_64 := $(TARGET_OUT_VENDOR)/lib64/
-LOCAL_MULTILIB := 64
-# Bypass prebuilt ELF check because libLLVM is not a module (it is copied by
-# PRODUCT_COPY_FILES instead).
-LOCAL_CHECK_ELF_FILES := false
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libRSDriverArm.so
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_STRIP_MODULE := false
-LOCAL_SRC_FILES_arm := lib/$(LOCAL_MODULE)
-LOCAL_SRC_FILES_arm64 := lib64/$(LOCAL_MODULE)
-LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)/lib/
-LOCAL_MODULE_PATH_64 := $(TARGET_OUT_VENDOR)/lib64/
-LOCAL_MULTILIB := both
-LOCAL_SHARED_LIBRARIES := libRS_internal libRSCpuRef liblog libnativewindow libbcinfo libdl libc++ libc libm
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libmalicore.bc
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_STRIP_MODULE := false
-LOCAL_SRC_FILES_arm := lib/$(LOCAL_MODULE)
-LOCAL_SRC_FILES_arm64 := lib64/$(LOCAL_MODULE)
-LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)/lib/
-LOCAL_MODULE_PATH_64 := $(TARGET_OUT_VENDOR)/lib64/
-LOCAL_MULTILIB := both
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := vulkan.hikey960.so
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_STRIP_MODULE := false
-LOCAL_SRC_FILES_arm := lib/hw/$(LOCAL_MODULE)
-LOCAL_SRC_FILES_arm64 := lib64/hw/$(LOCAL_MODULE)
-LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)/lib/hw
-LOCAL_MODULE_PATH_64 := $(TARGET_OUT_VENDOR)/lib64/hw
-LOCAL_MULTILIB := both
-LOCAL_SHARED_LIBRARIES := android.hardware.graphics.common@1.0 libz libnativewindow libc++ liblog libm libc libdl
-# Bypass prebuilt ELF check because the DT_SONAME "libGLES_mali.so" is
-# different from LOCAL_MODULE "vulkan.hikey960.so".
-LOCAL_CHECK_ELF_FILES := false
-include $(BUILD_PREBUILT)
-
-endif
diff --git a/mali/bifrost/END_USER_LICENCE_AGREEMENT.txt b/mali/bifrost/END_USER_LICENCE_AGREEMENT.txt
deleted file mode 100644
index 34da5f8..0000000
--- a/mali/bifrost/END_USER_LICENCE_AGREEMENT.txt
+++ /dev/null
@@ -1,194 +0,0 @@
-LES-PRE-20769
-SP-Version: 1.0
-25 November 2015
-
-END USER LICENCE AGREEMENT FOR THE MALI USERSPACE DRIVER ("Mali DRIVER")
-
-THIS END USER LICENCE AGREEMENT ("LICENCE") IS A LEGAL AGREEMENT
-BETWEEN YOU (EITHER A SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND
-ARM LIMITED ("ARM") FOR THE USE OF THE SOFTWARE ACCOMPANYING THIS
-LICENCE. ARM IS ONLY WILLING TO LICENSE THE SOFTWARE TO YOU ON
-CONDITION THAT YOU ACCEPT ALL OF THE TERMS IN THIS LICENCE. BY
-INSTALLING OR OTHERWISE USING OR COPYING THE SOFTWARE YOU INDICATE
-THAT YOU AGREE TO BE BOUND BY ALL OF THE TERMS OF THIS LICENCE. IF YOU
-DO NOT AGREE TO THE TERMS OF THIS LICENCE, ARM IS UNWILLING TO LICENSE
-THE SOFTWARE TO YOU AND YOU MAY NOT INSTALL, USE OR COPY THE SOFTWARE,
-AND YOU SHOULD PROMPTLY RETURN THE SOFTWARE TO YOUR SUPPLIER.
-
-"Applications" means applications for use solely in conjunction with
-Mali-based products manufactured under licence from ARM.
-
-"Output" means data resulting from your use of the Software and all
-direct and indirect derivatives thereof.
-
-"Software" means any software, firmware and data accompanying this
-Licence, any printed, electronic or online documentation supplied with
-it under the terms of this Licence for the Mali Driver.
-
-1. LICENCE GRANTS TO YOU.
-
-1.1 ARM hereby grants to you, subject to the terms and conditions of
-this Licence, a non-exclusive, non-transferable, revocable, worldwide
-licence to:
-
-(i)	use and copy the Software or certain components or optional
-	functionality in the Software, as applicable, solely for the
-	purposes of running, designing or developing Applications; and
-
-(ii)	subject to Clause 1.2, distribute the whole of the Software;
-	and/or (b) the whole or any part of the Software together
-	with, or as incorporated into, Applications; and
-
-1.2 If you choose to redistribute the whole or any part of the
-Software pursuant to the licences granted in Clause 1.1(ii), you
-agree: (i) not to use ARM's or any of its licensors names, logos or
-trademarks to market Applications; (ii) to retain any and all
-copyright notices and other notices (whether ARM's or its licensor's)
-which are included with the Software; and (iii) include a copy of this
-Licence with such redistribution.
-
-2. RESTRICTIONS ON USE OF THE SOFTWARE.
-
-BENCHMARKING: This Licence does not prevent you from using the
-Software for benchmarking purposes. However, you shall ensure that any
-and all benchmarking data relating to the Software, and any other
-results of your use or testing of the Software which are indicative of
-its performance, efficacy, reliability or quality, shall not be used
-to disparage ARM, its products or services, or in a manner that, in
-ARM's reasonable judgment, may diminish or otherwise damage the
-reputation of ARM.
-
-COPYRIGHT AND RESERVATION OF RIGHTS: The Software is owned by ARM or
-its licensors and is protected by copyright and other intellectual
-property laws and international treaties. The Software is licensed not
-sold. You acquire no rights to the Software other than as expressly
-provided by this Licence. You shall not remove from the Software any
-copyright notice or other notice and shall ensure that any such notice
-is reproduced in any copies of the whole or any part of the Software
-made by you or other permitted users.
-
-REVERSE ENGINEERING: Except to the extent that such activity is
-permitted by applicable law you shall not reverse engineer, decompile
-or disassemble any of the Software. If the Software was provided to
-you in Europe you shall not reverse engineer, decompile or disassemble
-any of the Software for the purposes of error correction.
-
-RESTRICTED USE: You agree that you shall not use the Software or the
-Output other than pursuant to and in accordance with the exercise of
-any of the licences granted under this Licence. Without limiting the
-generality of the foregoing, you shall not use the Software or any
-Output: (a) for determining if any features, functions or processes
-provided by the Software are covered by any patents or patent
-applications owned by you or a third party; or (b) for developing
-technology, applications or products which avoid any of ARM's
-intellectual property in the Software licensed hereunder; or (c) as a
-reference for modifying existing patents or patent applications or
-creating any continuation, continuation in part, or extension of
-existing patents or patent applications.
-
-3. SUPPORT.
-
-ARM is not under an obligation to provide support, but it may do so at
-its own discretion, and if it does, it will only be in respect of the
-Software as delivered.
-
-4. NO WARRANTIES.
-
-YOU AGREE THAT THE SOFTWARE IS LICENSED "AS IS", AND THAT ARM
-EXPRESSLY DISCLAIMS ALL REPRESENTATIONS, WARRANTIES, CONDITIONS OR
-OTHER TERMS, EXPRESS OR IMPLIED OR STATUTORY, INCLUDING WITHOUT
-LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, SATISFACTORY
-QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-
-YOU EXPRESSLY ASSUME ALL LIABILITIES AND RISKS, FOR USE OR OPERATION
-OF APPLICATIONS, INCLUDING WITHOUT LIMITATION, APPLICATIONS DESIGNED
-OR INTENDED FOR MISSION CRITICAL APPLICATIONS, SUCH AS PACEMAKERS,
-WEAPONRY, AIRCRAFT NAVIGATION, FACTORY CONTROL SYSTEMS, ETC. SHOULD
-THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL
-NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-5. LIMITATION OF LIABILITY.
-
-TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL
-ARM BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
-DAMAGES (INCLUDING LOSS OF PROFITS) ARISING OUT OF THE USE OR
-INABILITY TO USE THE SOFTWARE WHETHER BASED ON A CLAIM UNDER CONTRACT,
-TORT OR OTHER LEGAL THEORY, EVEN IF ARM WAS ADVISED OF THE POSSIBILITY
-OF SUCH DAMAGES.
-
-ARM does not seek to limit or exclude liability for death or personal
-injury arising from ARM's negligence or ARM's fraud and because some
-jurisdictions do not permit the exclusion or limitation of liability
-for consequential or incidental damages the above limitation relating
-to liability for consequential damages may not apply to you.
-
-NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED IN THIS LICENCE,
-THE MAXIMUM LIABILITY OF ARM TO YOU IN AGGREGATE FOR ALL CLAIMS MADE
-AGAINST ARM IN CONTRACT TORT OR OTHERWISE UNDER OR IN CONNECTION WITH
-THE SUBJECT MATTER OF THIS LICENCE SHALL NOT EXCEED THE GREATER OF:
-(I) THE TOTAL OF SUMS PAID BY YOU TO ARM (IF ANY) FOR THIS LICENCE;
-AND (II) $10.00 USD. THE EXISTENCE OF MORE THAN ONE CLAIM WILL NOT
-ENLARGE OR EXTEND THE LIMIT.
-
-6. U.S. GOVERNMENT END USERS.
-
-US Government Restrictions: Use, duplication, reproduction, release,
-modification, disclosure or transfer of the Software is restricted in
-accordance with the terms of this Licence.
-
-7. TERM AND TERMINATION.
-
-This Licence shall remain in force until terminated by you or by ARM.
-Without prejudice to any of its other rights if you are in breach of
-any of the terms and conditions of this Licence then ARM may terminate
-this Licence immediately upon giving written notice to you or on
-thirty (30) days written notice without cause. You may terminate this
-Licence at any time. Upon termination of this Licence by you or by ARM
-, you shall stop using the Software and destroy all copies of the
-Software in your possession, together with all documentation and
-related materials. The provisions of clauses 2, 3, 4, 5, 6, 7, and 8
-shall survive termination of this Licence.
-
-8. GENERAL.
-
-This Licence is governed by English Law. Except where ARM agrees
-otherwise in: (i) a written contract signed by you and ARM; or (ii) a
-written contract provided by ARM and accepted by you, this is the only
-agreement between you and ARM relating to the Software and it may only
-be modified by written agreement between you and ARM. Except as
-expressly agreed in writing, this Licence may not be modified by
-purchase orders, advertising or other representation by any person. If
-any clause or sentence in this Licence is held by a court of law to be
-illegal or unenforceable the remaining provisions of this Licence
-shall not be affected thereby. The failure by ARM to enforce any of
-the provisions of this Licence, unless waived in writing, shall not
-constitute a waiver of ARM's rights to enforce such provision or any
-other provision of this Licence in the future.
-
-At ARM's request, you agree to check your computers for installations
-of the Software and any other information requested by ARM relating to
-Software installation and to provide this information to ARM. You
-agree that auditors nominated by ARM may also perform such checking
-and reporting on behalf of ARM by prior appointment during your normal
-business hours on seven (7) days' notice. ARM shall bear the auditors'
-costs for that audit unless it reveals unlicensed usage in which case
-you shall promptly reimburse ARM for all reasonable costs and
-expenses, including professional fees, relating to such audit. Any
-information which is disclosed to ARM or such auditors during checking
-or audit shall be treated as your confidential information and shall
-only be used by ARM for licence management, compliance and enforcement
-purposes.
-
-The Software provided under this Agreement is subject to U.K.,
-European Union, and U.S. export control laws and regulations,
-including the U.S. Export Administration Act and its associated
-regulations (hereafter collectively referred to as "Export
-Regulations").  LICENSEE agrees to comply fully with all such Export
-Regulations and LICENSEE agrees that it shall not, either directly or
-indirectly, export in breach of the Export Regulations, any Software
-received under this Agreement, nor any direct products thereof; (i) to
-any country, company or person subject to export restrictions or
-sanctions under the Export Regulations; or (ii) for any prohibited end
-use, which at the time of export requires an export license or other
-governmental approval, without first obtaining such license or
-approval.
diff --git a/mali/bifrost/bin/bcc b/mali/bifrost/bin/bcc
deleted file mode 100755
index c828bca..0000000
--- a/mali/bifrost/bin/bcc
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib/egl/libGLES_mali.so b/mali/bifrost/lib/egl/libGLES_mali.so
deleted file mode 100755
index 092d472..0000000
--- a/mali/bifrost/lib/egl/libGLES_mali.so
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib/hw/vulkan.hikey960.so b/mali/bifrost/lib/hw/vulkan.hikey960.so
deleted file mode 120000
index 57c186c..0000000
--- a/mali/bifrost/lib/hw/vulkan.hikey960.so
+++ /dev/null
@@ -1 +0,0 @@
-../egl/libGLES_mali.so
\ No newline at end of file
diff --git a/mali/bifrost/lib/libRSDriverArm.so b/mali/bifrost/lib/libRSDriverArm.so
deleted file mode 100755
index 721e324..0000000
--- a/mali/bifrost/lib/libRSDriverArm.so
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib/libclcore.bc b/mali/bifrost/lib/libclcore.bc
deleted file mode 100644
index ee0429a..0000000
--- a/mali/bifrost/lib/libclcore.bc
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib/libclcore_neon.bc b/mali/bifrost/lib/libclcore_neon.bc
deleted file mode 100644
index ce3da69..0000000
--- a/mali/bifrost/lib/libclcore_neon.bc
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib/libmalicore.bc b/mali/bifrost/lib/libmalicore.bc
deleted file mode 100644
index 5901017..0000000
--- a/mali/bifrost/lib/libmalicore.bc
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib64/egl/libGLES_mali.so b/mali/bifrost/lib64/egl/libGLES_mali.so
deleted file mode 100755
index 19c41f1..0000000
--- a/mali/bifrost/lib64/egl/libGLES_mali.so
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib64/hw/vulkan.hikey960.so b/mali/bifrost/lib64/hw/vulkan.hikey960.so
deleted file mode 120000
index 57c186c..0000000
--- a/mali/bifrost/lib64/hw/vulkan.hikey960.so
+++ /dev/null
@@ -1 +0,0 @@
-../egl/libGLES_mali.so
\ No newline at end of file
diff --git a/mali/bifrost/lib64/libLLVM.so b/mali/bifrost/lib64/libLLVM.so
deleted file mode 100755
index 894b1d1..0000000
--- a/mali/bifrost/lib64/libLLVM.so
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib64/libRSDriverArm.so b/mali/bifrost/lib64/libRSDriverArm.so
deleted file mode 100755
index 0a10776..0000000
--- a/mali/bifrost/lib64/libRSDriverArm.so
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib64/libbcc.so b/mali/bifrost/lib64/libbcc.so
deleted file mode 100755
index b95b141..0000000
--- a/mali/bifrost/lib64/libbcc.so
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib64/libbccArm.so b/mali/bifrost/lib64/libbccArm.so
deleted file mode 100755
index 7fe1dfd..0000000
--- a/mali/bifrost/lib64/libbccArm.so
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib64/libclcore.bc b/mali/bifrost/lib64/libclcore.bc
deleted file mode 100644
index ca3d10b..0000000
--- a/mali/bifrost/lib64/libclcore.bc
+++ /dev/null
Binary files differ
diff --git a/mali/bifrost/lib64/libmalicore.bc b/mali/bifrost/lib64/libmalicore.bc
deleted file mode 100644
index f8c6d71..0000000
--- a/mali/bifrost/lib64/libmalicore.bc
+++ /dev/null
Binary files differ
diff --git a/mali/utgard/Android.mk b/mali/utgard/Android.mk
deleted file mode 100644
index c7afa7b..0000000
--- a/mali/utgard/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-ifneq ($(filter hikey hikey64 hikey32, $(TARGET_DEVICE)),)
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := END_USER_LICENCE_AGREEMENT.txt
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_STRIP_MODULE := false
-LOCAL_SRC_FILES_arm := $(LOCAL_MODULE)
-LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)
-LOCAL_MULTILIB := 32
-LOCAL_SHARED_LIBRARIES := libc++ libc libdl liblog libm
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libGLES_mali.so
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_STRIP_MODULE := false
-LOCAL_SRC_FILES_arm := lib/egl/$(LOCAL_MODULE)
-LOCAL_SRC_FILES_arm64 := lib64/egl/$(LOCAL_MODULE)
-LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)/lib/egl/
-LOCAL_MODULE_PATH_64 := $(TARGET_OUT_VENDOR)/lib64/egl/
-LOCAL_MULTILIB := both
-LOCAL_SHARED_LIBRARIES := libc++ libc libdl liblog libm
-include $(BUILD_PREBUILT)
-
-endif
diff --git a/mali/utgard/END_USER_LICENCE_AGREEMENT.txt b/mali/utgard/END_USER_LICENCE_AGREEMENT.txt
deleted file mode 100644
index 34da5f8..0000000
--- a/mali/utgard/END_USER_LICENCE_AGREEMENT.txt
+++ /dev/null
@@ -1,194 +0,0 @@
-LES-PRE-20769
-SP-Version: 1.0
-25 November 2015
-
-END USER LICENCE AGREEMENT FOR THE MALI USERSPACE DRIVER ("Mali DRIVER")
-
-THIS END USER LICENCE AGREEMENT ("LICENCE") IS A LEGAL AGREEMENT
-BETWEEN YOU (EITHER A SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND
-ARM LIMITED ("ARM") FOR THE USE OF THE SOFTWARE ACCOMPANYING THIS
-LICENCE. ARM IS ONLY WILLING TO LICENSE THE SOFTWARE TO YOU ON
-CONDITION THAT YOU ACCEPT ALL OF THE TERMS IN THIS LICENCE. BY
-INSTALLING OR OTHERWISE USING OR COPYING THE SOFTWARE YOU INDICATE
-THAT YOU AGREE TO BE BOUND BY ALL OF THE TERMS OF THIS LICENCE. IF YOU
-DO NOT AGREE TO THE TERMS OF THIS LICENCE, ARM IS UNWILLING TO LICENSE
-THE SOFTWARE TO YOU AND YOU MAY NOT INSTALL, USE OR COPY THE SOFTWARE,
-AND YOU SHOULD PROMPTLY RETURN THE SOFTWARE TO YOUR SUPPLIER.
-
-"Applications" means applications for use solely in conjunction with
-Mali-based products manufactured under licence from ARM.
-
-"Output" means data resulting from your use of the Software and all
-direct and indirect derivatives thereof.
-
-"Software" means any software, firmware and data accompanying this
-Licence, any printed, electronic or online documentation supplied with
-it under the terms of this Licence for the Mali Driver.
-
-1. LICENCE GRANTS TO YOU.
-
-1.1 ARM hereby grants to you, subject to the terms and conditions of
-this Licence, a non-exclusive, non-transferable, revocable, worldwide
-licence to:
-
-(i)	use and copy the Software or certain components or optional
-	functionality in the Software, as applicable, solely for the
-	purposes of running, designing or developing Applications; and
-
-(ii)	subject to Clause 1.2, distribute the whole of the Software;
-	and/or (b) the whole or any part of the Software together
-	with, or as incorporated into, Applications; and
-
-1.2 If you choose to redistribute the whole or any part of the
-Software pursuant to the licences granted in Clause 1.1(ii), you
-agree: (i) not to use ARM's or any of its licensors names, logos or
-trademarks to market Applications; (ii) to retain any and all
-copyright notices and other notices (whether ARM's or its licensor's)
-which are included with the Software; and (iii) include a copy of this
-Licence with such redistribution.
-
-2. RESTRICTIONS ON USE OF THE SOFTWARE.
-
-BENCHMARKING: This Licence does not prevent you from using the
-Software for benchmarking purposes. However, you shall ensure that any
-and all benchmarking data relating to the Software, and any other
-results of your use or testing of the Software which are indicative of
-its performance, efficacy, reliability or quality, shall not be used
-to disparage ARM, its products or services, or in a manner that, in
-ARM's reasonable judgment, may diminish or otherwise damage the
-reputation of ARM.
-
-COPYRIGHT AND RESERVATION OF RIGHTS: The Software is owned by ARM or
-its licensors and is protected by copyright and other intellectual
-property laws and international treaties. The Software is licensed not
-sold. You acquire no rights to the Software other than as expressly
-provided by this Licence. You shall not remove from the Software any
-copyright notice or other notice and shall ensure that any such notice
-is reproduced in any copies of the whole or any part of the Software
-made by you or other permitted users.
-
-REVERSE ENGINEERING: Except to the extent that such activity is
-permitted by applicable law you shall not reverse engineer, decompile
-or disassemble any of the Software. If the Software was provided to
-you in Europe you shall not reverse engineer, decompile or disassemble
-any of the Software for the purposes of error correction.
-
-RESTRICTED USE: You agree that you shall not use the Software or the
-Output other than pursuant to and in accordance with the exercise of
-any of the licences granted under this Licence. Without limiting the
-generality of the foregoing, you shall not use the Software or any
-Output: (a) for determining if any features, functions or processes
-provided by the Software are covered by any patents or patent
-applications owned by you or a third party; or (b) for developing
-technology, applications or products which avoid any of ARM's
-intellectual property in the Software licensed hereunder; or (c) as a
-reference for modifying existing patents or patent applications or
-creating any continuation, continuation in part, or extension of
-existing patents or patent applications.
-
-3. SUPPORT.
-
-ARM is not under an obligation to provide support, but it may do so at
-its own discretion, and if it does, it will only be in respect of the
-Software as delivered.
-
-4. NO WARRANTIES.
-
-YOU AGREE THAT THE SOFTWARE IS LICENSED "AS IS", AND THAT ARM
-EXPRESSLY DISCLAIMS ALL REPRESENTATIONS, WARRANTIES, CONDITIONS OR
-OTHER TERMS, EXPRESS OR IMPLIED OR STATUTORY, INCLUDING WITHOUT
-LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, SATISFACTORY
-QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-
-YOU EXPRESSLY ASSUME ALL LIABILITIES AND RISKS, FOR USE OR OPERATION
-OF APPLICATIONS, INCLUDING WITHOUT LIMITATION, APPLICATIONS DESIGNED
-OR INTENDED FOR MISSION CRITICAL APPLICATIONS, SUCH AS PACEMAKERS,
-WEAPONRY, AIRCRAFT NAVIGATION, FACTORY CONTROL SYSTEMS, ETC. SHOULD
-THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL
-NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-5. LIMITATION OF LIABILITY.
-
-TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL
-ARM BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
-DAMAGES (INCLUDING LOSS OF PROFITS) ARISING OUT OF THE USE OR
-INABILITY TO USE THE SOFTWARE WHETHER BASED ON A CLAIM UNDER CONTRACT,
-TORT OR OTHER LEGAL THEORY, EVEN IF ARM WAS ADVISED OF THE POSSIBILITY
-OF SUCH DAMAGES.
-
-ARM does not seek to limit or exclude liability for death or personal
-injury arising from ARM's negligence or ARM's fraud and because some
-jurisdictions do not permit the exclusion or limitation of liability
-for consequential or incidental damages the above limitation relating
-to liability for consequential damages may not apply to you.
-
-NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED IN THIS LICENCE,
-THE MAXIMUM LIABILITY OF ARM TO YOU IN AGGREGATE FOR ALL CLAIMS MADE
-AGAINST ARM IN CONTRACT TORT OR OTHERWISE UNDER OR IN CONNECTION WITH
-THE SUBJECT MATTER OF THIS LICENCE SHALL NOT EXCEED THE GREATER OF:
-(I) THE TOTAL OF SUMS PAID BY YOU TO ARM (IF ANY) FOR THIS LICENCE;
-AND (II) $10.00 USD. THE EXISTENCE OF MORE THAN ONE CLAIM WILL NOT
-ENLARGE OR EXTEND THE LIMIT.
-
-6. U.S. GOVERNMENT END USERS.
-
-US Government Restrictions: Use, duplication, reproduction, release,
-modification, disclosure or transfer of the Software is restricted in
-accordance with the terms of this Licence.
-
-7. TERM AND TERMINATION.
-
-This Licence shall remain in force until terminated by you or by ARM.
-Without prejudice to any of its other rights if you are in breach of
-any of the terms and conditions of this Licence then ARM may terminate
-this Licence immediately upon giving written notice to you or on
-thirty (30) days written notice without cause. You may terminate this
-Licence at any time. Upon termination of this Licence by you or by ARM
-, you shall stop using the Software and destroy all copies of the
-Software in your possession, together with all documentation and
-related materials. The provisions of clauses 2, 3, 4, 5, 6, 7, and 8
-shall survive termination of this Licence.
-
-8. GENERAL.
-
-This Licence is governed by English Law. Except where ARM agrees
-otherwise in: (i) a written contract signed by you and ARM; or (ii) a
-written contract provided by ARM and accepted by you, this is the only
-agreement between you and ARM relating to the Software and it may only
-be modified by written agreement between you and ARM. Except as
-expressly agreed in writing, this Licence may not be modified by
-purchase orders, advertising or other representation by any person. If
-any clause or sentence in this Licence is held by a court of law to be
-illegal or unenforceable the remaining provisions of this Licence
-shall not be affected thereby. The failure by ARM to enforce any of
-the provisions of this Licence, unless waived in writing, shall not
-constitute a waiver of ARM's rights to enforce such provision or any
-other provision of this Licence in the future.
-
-At ARM's request, you agree to check your computers for installations
-of the Software and any other information requested by ARM relating to
-Software installation and to provide this information to ARM. You
-agree that auditors nominated by ARM may also perform such checking
-and reporting on behalf of ARM by prior appointment during your normal
-business hours on seven (7) days' notice. ARM shall bear the auditors'
-costs for that audit unless it reveals unlicensed usage in which case
-you shall promptly reimburse ARM for all reasonable costs and
-expenses, including professional fees, relating to such audit. Any
-information which is disclosed to ARM or such auditors during checking
-or audit shall be treated as your confidential information and shall
-only be used by ARM for licence management, compliance and enforcement
-purposes.
-
-The Software provided under this Agreement is subject to U.K.,
-European Union, and U.S. export control laws and regulations,
-including the U.S. Export Administration Act and its associated
-regulations (hereafter collectively referred to as "Export
-Regulations").  LICENSEE agrees to comply fully with all such Export
-Regulations and LICENSEE agrees that it shall not, either directly or
-indirectly, export in breach of the Export Regulations, any Software
-received under this Agreement, nor any direct products thereof; (i) to
-any country, company or person subject to export restrictions or
-sanctions under the Export Regulations; or (ii) for any prohibited end
-use, which at the time of export requires an export license or other
-governmental approval, without first obtaining such license or
-approval.
diff --git a/mali/utgard/lib/egl/libGLES_mali.so b/mali/utgard/lib/egl/libGLES_mali.so
deleted file mode 100755
index f86da7e..0000000
--- a/mali/utgard/lib/egl/libGLES_mali.so
+++ /dev/null
Binary files differ
diff --git a/mali/utgard/lib64/egl/libGLES_mali.so b/mali/utgard/lib64/egl/libGLES_mali.so
deleted file mode 100755
index 5c0af47..0000000
--- a/mali/utgard/lib64/egl/libGLES_mali.so
+++ /dev/null
Binary files differ
diff --git a/vendor-package-ver.mk b/vendor-package-ver.mk
new file mode 100644
index 0000000..be369eb
--- /dev/null
+++ b/vendor-package-ver.mk
@@ -0,0 +1,4 @@
+HELPER_SCRIPT=./device/linaro/hikey/vendor-package-ver.sh
+EXPECTED_LINARO_VENDOR_VERSION := $(shell $(HELPER_SCRIPT) ver)
+VND_PKG_URL := $(shell $(HELPER_SCRIPT) url)
+LINARO_VENDOR_PATH := vendor/linaro/
diff --git a/vendor-package-ver.sh b/vendor-package-ver.sh
new file mode 100755
index 0000000..12f4a6f
--- /dev/null
+++ b/vendor-package-ver.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+export EXPECTED_LINARO_VENDOR_VERSION=20220210
+export EXPECTED_LINARO_VENDOR_SHA=75efc8471f299f64716140712c0785b8e8aeaf5aa7e389a6f12f78ad4962420740da32f4535d795006e78c5f0b77a1cee8c168192a87f668103c00d87d480e6d
+export VND_PKG_URL=https://releases.linaro.org/android/aosp-linaro-vendor-package/extract-linaro_devices-20220210.tgz
+
+if [ "$1" = "url" ]; then
+ echo $VND_PKG_URL
+elif [ "$1" = "ver" ]; then
+ echo $EXPECTED_LINARO_VENDOR_VERSION
+elif [ "$1" = "sha" ]; then
+ echo $EXPECTED_LINARO_VENDOR_SHA
+fi
